/**
 * 
 */
package com.business.common;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.phiz.common.base.BaseController;
import com.phiz.common.base.Result;
import com.phiz.common.utils.AliyunOSSUtil;

/**
 *<p>@ClassName: UploadController</p>
 *<p>@Description: TODO(这里用一句话描述这个类的作用)</p>
 *<p>@author 淳峰</p>
 *<p>@date 2018年11月15日 下午9:44:08</p>
 *<p></p>
*/
@Controller
@RequestMapping("common/upload")
public class UploadController extends BaseController{
	
	
	@Autowired
	private AliyunOSSUtil ossUtils;
	
	@PostMapping("/file") // 等价于 @RequestMapping(value = "/upload", method = RequestMethod.POST)
	@ResponseBody
	public Result uplaod(HttpServletRequest req, @RequestParam("file") MultipartFile file, Model m) {//1. 接受上传的文件  @RequestParam("file") MultipartFile file
        try {
            //2.根据时间戳创建新的文件名，这样即便是第二次上传相同名称的文件，也不会把第一次的文件覆盖了
            String fileName = System.currentTimeMillis() + file.getOriginalFilename();
            //3.通过req.getServletContext().getRealPath("") 获取当前项目的真实路径，然后拼接前面的文件名
            String destFileName = req.getServletContext().getRealPath("") + "uploaded" + File.separator + fileName;
            //4.第一次运行的时候，这个文件所在的目录往往是不存在的，这里需要创建一下目录（创建到了webapp下uploaded文件夹下）
            File destFile = new File(destFileName);
            destFile.getParentFile().mkdirs();
            //5.把浏览器上传的文件复制到希望的位置
            file.transferTo(destFile);
            String url = ossUtils.uploadFileToOSS(destFile, "img/"+fileName);
            //6.把文件名放在model里，以便后续显示用
            m.addAttribute("fileName", fileName);
            return SUCCESS(url);
        } catch (FileNotFoundException e) {
        	return ERROR();
        } catch (IOException e) {
        	return ERROR();
        }
    }
	
	
//	public static void main(String[] args) throws Exception {
//		// Endpoint以杭州为例，其它Region请按实际情况填写。
//		String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
//		// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
//		String accessKeyId = "<yourAccessKeyId>";
//		String accessKeySecret = "<yourAccessKeySecret>";
//
//		// 创建OSSClient实例。
//		OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
//
//		// 上传字符串。
//		String content = "Hello OSS";
//		ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()));
//
//		// 关闭OSSClient。
//		ossClient.shutdown();
//
//	}

}
